#include <iostream>

// void Swap(int *a,int *b)
// {
//     int temp = *a;
//     *a = *b;
//     *b = temp;
// }

void Swap(int& a,int& b)
{
    int temp = a;
    a = b;
    b = temp;
}

void Print(const int& a)
{
    std::cout<<a<<std::endl;
}

int main()
{
    // int a = 10;
    // int b = 20;
    // Swap(a,b);
    // std::cout<<a<<" "<<b<<std::endl;
    // Swap(&a,&b);

    // int a = 10;
    // int& b = a;//定义a的引用 b
    // b = 20;
    // std::cout<<a<<std::endl;
    //1、引用定义是必须要初始化
    //2、引用在定义后不能再改变朝向
    //3、引用只能对左值进行使用
    int a = 10;
    int&b = a;
    // int c = 20;
    // b = c;
    //常量引用:左右值都能定义
    //不允许修改值
    // const int&b = a;

    int a = 10;
    int b = 20;
    int* const p = &a;
    return 0;
}